Tengo un nombre de estadísticas de matriz como manzana X plátano Y kiwi z Necesito poner manzana, plátano y kiwi en una matriz Fruits y X, Y y Z en una matriz llamada alfabetos. ¿Algún mecanismo simple de C # para ello, por favor?
Utilice la sobrecarga IEnumerable.Where que proporciona el índice. var frutas = statsname.Where ((s, i) => i% 2 == 0) .ToArray (); var alphabets = statsname.Where ((s, i) => i% 2! = 0) .ToArray (); | Robado de Cómo obtener elementos alternativos usando Enumerable en C # var frutas = myArray.Where ((t, i) => i% 2 == 0) .ToArray (); var alphabets = myArray.Where ((t, i) => i% 2 == 1) .ToArray (); | Si he entendido tu pregunta correctamente lo que quieres es muy simple: Desea poner frutas en una variedad de frutas y lo mismo para los alfabetos y aparecen alternativamente en la matriz statsname, por lo que: para (int i = 0, j = 0; i lista = nueva Lista () {"manzana", "X", "banana", "Y", "Kiwi", "z"}; var result = list.Select ((l, i) => new {l, i}) .GroupBy (p => p.i% 2) .Seleccionar (x => x.Seleccionar (v => v.l) .ToList ()) .Listar(); Entonces tienes una lista de listas: | lista frutas = nueva Lista (); lista alfabeto = nueva Lista (); para (int i = 0; i everyOther (colección IEnumerable ) { usando (var e = collection.GetEnumerator ()) { while (e.MoveNext ()) { rendimiento rendimiento e.Current; e.MoveNext (); // saltar uno } } } Puede usar System.Linq.Skip para omitir el primer elemento. cadena [] palabras = "manzana X plátano Y Kiwi z" .Split (); var fruit = everyOther (palabras); var alphabets = everyOther (words.Skip (1)); Solo utilícelos como una nueva colección o llame a .ToArray () o .ToList () en ellos: foreach (cadena f en frutas) Console.WriteLine (f); cadena [] anArray = frutas.ToArray (); // usando System.Linq Ahora tienes lo que necesitas. Los iteradores son métodos que producen retorno; consulte Iteradores (Guía de programación de C #). Ésta es una característica muy importante del idioma. Usted puede: omitir elementos decorar elementos cambiar el orden concatenar secuencias (ver System.Linq.Concat) ... | Aquí hay un código de trabajo, con suerte, esto le será útil: usando el sistema; utilizando System.Collections.Generic; usando System.IO; utilizando System.Linq; usando System.Text; usando System.Threading.Tasks; espacio de nombres ReadFile { programa de clase { static void ReadFile (string filePath, List custumerNames, List phoneNumbers) { línea de cadena = cadena.Evacío; var fileStream = new StreamReader (filePath); bool isPhoneNumber = true; while ((línea = fileStream.ReadLine ())! = null) { if (isPhoneNumber) { phoneNumbers.Add (Convert.ToInt32 (línea)); isPhoneNumber = false; } más { custumerNames.Add (línea); isPhoneNumber = true; } } fileStream.Close (); } static void Main (cadena [] argumentos) { Console.WriteLine ("Comenzó a leer el archivo ..."); Lista custumersNamesList = nueva Lista (); Lista custumersPhonesNumbers = nueva Lista (); ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers); // Suponiendo que ambas listas tienen la misma longitud. para (int i = 0; i